2.1 基本控件
tkinter中,每个组件都是一个类,创建某个组件其实就是将这个类实例化。在实例化的过程中,可以通过构造函数给组件设置一些属性,同时还必须给该组件指定一个父容器,意即该组件放置何处。最后,还需要给组件设置一个几何管理器(布局管理器),解决了放哪里的问题,还需要解决怎么放的问题,而布局管理器就是解决怎么放问题的,即设置子组件在父容器中的放置位置。
基本控件学习
from tkinter import *
root = Tk()
Label(root, text="这是一个标签").pack()
Button(root, text="按钮").pack()
Checkbutton(root, text="多选框").pack()
Entry(root).pack()
Radiobutton(root, text="男", value=1).pack()
Radiobutton(root, text="女", value=2).pack()
Scale(root, orient='horizonta').pack()
root.mainloop()
Label 一个标签组件。主要用来实现显示功能,可以显示文字和图片。
l = Label(parent, option=value ... )
参数说明:- parent: 代表承载该按钮的父容器.
- options: 可选项,即该按钮的可设置的属性。这些选项可以用键 =值的形式设置,并以逗号分隔
如下,分别使用了两个标签,一个显示文字,另一个显示了一张位图
from tkinter import *
root = Tk()
Label(root, text="我是标签").pack()
Label(root, bitmap="error").pack()
root.mainloop()
关于图片显示 注意:Python内置了10种位图,可以直接使用,设置bitmap属性即可。 "error" "gray75" "gray50" "gray25" "gray12" "hourglass" "info" "questhead" "question" "warning"
效果 :
Python 中image属性仅支持gif、pgm、ppm格式,bitmap支持xbm格式。设置方法:
photo = PhotoImage(file="image.gif")
bmp = BitmapImage(file="logo.xbm")
label = Label(root,image = photo)
注意:image和bitmap参数两者只需设置一个,如果同时设置两个属性,则image 将优先
如需显示其他格式图片,则需要做一些特别处理,要用到Python的图像处理库——PIL库,但是PIL不支持Python3,且该库过于陈旧,不建议使用,这里可以选择其替代方案,Pillow库,函数使用方法与PIL相同。首先去网上下载并安装Pillow库
使用如下:
from PIL import Image, ImageTk
image = Image.open("F:\\001.jpg")
photo = ImageTk.PhotoImage(image)
#在Label中显示图片
label = Label(root,image = photo)
label.pack()
Button 一个简单的按钮,用来响应用户的一个点击操作。能够与一个函数关联,当按钮被按下时,自动调用该函数。它的属性可以直接参考标签,事实上按钮就是一个特殊的标签,只不过按钮多出了点击响应的功能
b = Button(parent,option=value,... )
from tkinter import *
def onclick():
print("点你妹啊 ")
root = Tk()
Button(root, text="按钮", command=onclick).pack()
root.mainloop()
- Checkbutton
一个多选框组件。主要给用户提供多个选项的选中功能。
w= Checkbutton(parent,option,...)
from tkinter import *
def sel():
val = "Checkbutton value is " + str(v.get())
print(val)
root = Tk()
v = IntVar()
Checkbutton(root, text="点我啊", variable=v, command=sel).pack()
root.mainloop()
方法 | 描述 |
---|---|
deselect() | 清除单选按钮的状态 |
flash() | 在激活状态颜色和正常颜色之间闪烁几次单选按钮,但保持它开始时的状态。 |
invoke() | 可以调用此方法来获得与用户单击单选按钮以更改其状态时发生的操作相同的操作 |
select() | 设置单选按钮为选中。 |
toggle() | 反选。当前被选中,则调用之后变为未选中,反之则为选中。 |
Entry 一个单行文本输入框。可以用来接受用户的输入,但是只能输入一行。如果你只是想显示而不是编辑,那么应该使用标签。
w = Entry(parent, option=value ... )
需要注意一点,Entry与 Lable 和 Button 不同,其text 属性是无效的。那么需要让Entry显示文字改如果操作呢?
from tkinter import *
root = Tk()
e = StringVar()
# 使用textvariable属性,绑定字符串型跟踪变量e
entry = Entry(root,textvariable = e)
e.set('请输入……')
entry.pack()
root.mainloop()
当用户在Entry输入密码时,希望输入的密码是不可见的,而不是明文,则可以使用show属性
from tkinter import *
root = Tk()
entry = Entry(root,show="*") entry.pack()
root.mainloop()
方法列表
方法 | 描述 |
---|---|
delete ( first, last=None ) | 删除字符的部件,在指标之一,但不包括在最后位置的字符开始。如果第二个参数被忽略,只有在单个字符的位置被删除. |
get() | 返回当前组件的字符串 |
icursor ( index ) | 在给定索引处的字符之前插入光标 |
index ( index ) | 移动entry的内容,使得给定索引处的字符是最左边的可见字符。 如果文本在entry中刚好完全显示,则不起作用。 |
insert ( index, s ) | 将字符串s插入给定索引处的字符之前。 |
select_adjust ( index ) | 此方法用于确保选中的部分包含指定索引处的字符。 |
select_clear() | 清除选中的。 如果当前没有选中的,则不起作用。 |
select_from ( index ) | 将ANCHOR索引位置设置为由索引选择的字符位置,并选择该字符。 |
select_present() | 如果有选择,则返回true,否则返回false。 |
select_range ( start, end ) | 在程序控制下设置选择。 选择从开始索引处开始的文本,但不包括结束索引处的字符。 起始位置必须在结束位置之前。 |
select_to ( index ) | 选择从ANCHOR位置开始的所有文本,但不包括给定索引处的字符。 |
xview ( index ) | 此方法在将Entry链接到水平滚动条时非常有用。 |
xview_scroll ( number, what ) | 用于水平滚动Entry。 参数必须是UNITS,按字符宽度滚动,或者按页面大小来滚动。 数字是从左到右滚动的正数,负数从右到左滚动。 |
Radiobutton 单选按钮,即在同一组内只能有一个按钮被选中,每当选中组内的一个按钮时,其它的按钮自动改为非选中态,与其他控件不同的是,它有组的概念。
w = Radiobutton(parent, option, ... )
from tkinter import *
def sel():
selection = "You selected the option " + str(var.get())
print(selection)
root = Tk()
#创建整型变量,用于绑定,相同的整型变量是为同一组
var = IntVar()
Radiobutton(root, text="Option 1", variable=var, value=1,command=sel).pack( anchor = W )
Radiobutton(root, text="Option 2",variable=var,value=2,command=sel).pack( anchor = W )
Radiobutton(root, text="Option 3", variable=var, value=3,command=sel).pack( anchor = W)
root.mainloop()
方法 | 描述 |
---|---|
deselect() | 清除单选按钮的状态 |
flash() | 在激活状态颜色和正常颜色之间闪烁几次单选按钮,但保持它开始时的状态。 |
invoke() | 可以调用此方法来获得与用户单击单选按钮以更改其状态时发生的操作相同的操作 |
select() | 设置单选按钮为选中。 |
- Scale 一个滑块控件。用于在一个范围内,拖动它改变值的大小,例如音量条。
from tkinter import *
root = Tk()
v = IntVar()
# from_ : 设置最小值 to:设置最大值
# tickinterval:设置刻度 length:设置滑块的长度,单位为像素
Scale(root, orient='horizonta', variable=v, from_=0, to=200, tickinterval=50, length=200).pack()
root.mainloop()
跟踪控件的值
为了响应特定小控件的值的变化,Tkinter提供了自己的变量类,它们可以用来跟踪这些小控件的值。
# 字符串型
my_string = tk.StringVar()
# 布尔型
ticked_yes = tk.BooleanVar()
# 整型
group_choice = tk.IntVar()
# 浮点型
volume = tk.DoubleVar()
# 将变量类与控件关联
tk.Entry(root, textvariable=my_string)
tk.Checkbutton(root, text="选我", variable=ticked_yes)
tk.Radiobutton(root, text="点我", variable=group_choice)
tk.Scale(root, label="音量", variable=volume)
变量类的操作,使用set
和get
方法
# 向Entry输入框中设置文本
my_string.set("请输入内容")
# 获取Entry中用户输入的内容
my_string.get()